// 手写instanceof方法
// 根据原型链向上查找，如果找到null都还没找到，就返回 false, 找到就返回 true
function myInstanceof(left, right) {
  // 获取 right 构造函数的 prototype，也就是获取构造函数的原型
  let proto = right.prototype;

  // 获取 left 对象的原型
  let leftProto = Object.getPrototypeOf(left);

  // 遍历 left 对象的原型链
  while (true) {
    // 如果 left 对象的原型为 null，说明已经到了原型链的顶端，返回 false
    if (leftProto === null) {
      return false;
    }

    // 如果 left 对象的原型与 right 构造函数的 prototype 相等，返回 true
    if (leftProto === proto) {
      return true;
    }

    // 继续沿着原型链向上查找
    leftProto = Object.getPrototypeOf(leftProto);
  }
}
